话不多说半句多,直接上。
什么是Container ?
- container是通过image创建
- container的本质是在image(image本身不可读写)的最上层建立了一个layer(可读写的),这个和Java中类与实例的关系比较像
- image负责存储和分发,container负责运行app
/屏幕快照 2019-03-24 下午10.37.03.png)
我们来用image 来创建一个 container
运行1
docker run hello-world
/屏幕快照 2019-03-24 下午10.40.51.png)
因为我本地没有 hello-world这个镜像所以 它回去 dockerhub 上拉取官方的镜像,我们能看到它打印出了 hello from docker
然后我们运行1
docker container ls
看第二张图,我们发现 运行完成后没有然后运行记录,这是因为 它已经运行完了,自动退出了,
然后我们运行1
docker container ls -a
就能看到 它已经退出三分钟了。/屏幕快照 2019-03-24 下午10.44.31.png)
那么有什么办法 让它不停止运行吗?
答案是 有的1
docker run -it ubuntu
ps:1
docker run -it -d ubuntu
-d 参数可以 让程序以 后台方式运行
这里 -it的意思 是 以交互式运行的方式 去运行这个镜像。
运行完毕后我们发现 我们进入了 ubuntu容器内部。ps:输入exit 回车 退出容器/屏幕快照 2019-03-24 下午10.49.29.png)
大家可以执行,查看详细的命令说明1
docker run --help
/屏幕快照 2019-03-24 下午10.52.52.png)
然后我们输入1
docker container ls -a(查询所有)
可以看到 之前我运行过的容器的历史
那么 我们怎么把它删除掉呢?1
docker rm(rmi 删除image rm默认删除容器) xxx(容器id)
但是,这样只能一个个删除,有没有简单的方式呢?
程序员当然用代码解决1
docker container ls qa
会查询出所有容器的 id
然后我门运行1
2docker rm $(docker container ls -qa)
就能一次性删除所有的 容器了
/屏幕快照 2019-03-24 下午10.57.17.png)
那么我还有个问题,这样一下子把所有容器都删除了,万一我不想删除所有 只想删除其中几个呢?
也是有办法的,1
docker container ls -f "status=exited"
查询出所有已经退出的容器 通过 -f 参数过滤
然后加上 -qa 参数 可以查询出 所有退出容器的id1
docker container ls -f "status=exited" -qa
运行下面的命令 即可按照条件删除1
docker rm $(docker container ls -f "status=exited" -qa)
/屏幕快照 2019-03-24 下午11.09.52.png)
评论加载中